package org.jeecg.modules.lowcode.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * @Description: 任务表
 * @Author: Linbizhao
 * @Date: 2024-05-23
 */
@Data
@TableName("theme_ivh_task")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "theme_ivh_task对象", description = "任务表")
public class ThemeIVHTask {

    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键Id")
    private Integer id;

    @ApiModelProperty(value = "任务id")
    private String taskId;

    @ApiModelProperty(value = "任务类型[1tts试听，2视频基本版，3视频进阶版]")
    private Integer taskType;

    @ApiModelProperty(value = "标题")
    private String title;

    @ApiModelProperty(value = "coverUrl")
    private Object coverUrl;

    @ApiModelProperty(value = "分辨率")
    private String resolution;

    @ApiModelProperty(value = "任务来源枚举[live:直播，sinsam:芯象]")
    private String source;

    @ApiModelProperty(value = "直播id，来源为live时有值")
    private Integer liveId;

    @ApiModelProperty(value = "一体机设备id")
    private String deviceId;

    @ApiModelProperty(value = "加密狗id")
    private String dogId;

    @ApiModelProperty(value = "任务请求参数")
    private Object requestParam;

    @ApiModelProperty(value = "mediaUrl")
    private Object mediaUrl;

    @ApiModelProperty(value = "制作视频时，返回视频对应的SRT字幕地址")
    private String subtitlesUrl;

    @ApiModelProperty(value = "制作状态枚举[NOT:未提交,COMMIT：已提交需要排队，MAKING：制作中，SUCCESS：制作成功，FAIL：制作失败]")
    private String status;

    @ApiModelProperty(value = "失败的原因,制作状态枚举为FAIL 有值")
    private String failMessage;

    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建时间")
    private Date createTime;

    @ApiModelProperty(value = "创建人")
    private Integer createUser;

    @Excel(name = "推送时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "推送时间")
    private Date pushTime;

    @Excel(name = "回调时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "回调时间")
    private Date callbackTime;

    @ApiModelProperty(value = "回调方式(0主动查询腾讯服务商，1腾讯通知，2主动查询华为服务商，3华为通知)")
    private Integer callbackType;

    @Excel(name = "过期时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "过期时间")
    private Date expireTime;

    @ApiModelProperty(value = "视频时长")
    private Integer duration;

    @ApiModelProperty(value = "文件大小")
    private Integer fileSize;

    @ApiModelProperty(value = "金额")
    private Integer amount;

    @ApiModelProperty(value = "是否删除[1是，0否]")
    private Integer isDelete;

    @ApiModelProperty(value = "平台(1腾讯云 2华为云)")
    private Integer platform;

    @ApiModelProperty(value = "是否免费，默认收费（0否1是）")
    private Integer isFree;

    @ApiModelProperty(value = "关联腾讯云的tts试听任务，只有自研数字人才有")
    private String relateTtsTaskId;

}
